/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package autenticacion;

import excepciones.UsuarioInvalido;
import excepciones.UsuarioYaExistente;
import java.util.logging.Level;
import java.util.logging.Logger;
import model.Usuario;
import util.PasswordService;
import util.PasswordService.SystemUnavailableException;

/**
 *
 * @author Jah
 */
public class Autenticacion {
    private String apiKey;
    
    public Autenticacion(String apiKey){
        this.apiKey=apiKey;
    }

    public static Usuario autenticaUsuario(String email, String contrasena)throws UsuarioInvalido{
        String encContra=encriptaContrasena(contrasena);
        if(encContra!=null){
            try {
                Usuario u=Usuario.autenticaUsuario(email, encContra);
                return u;
            } catch (Exception e) {
                throw new UsuarioInvalido();
            }
        }else{
            throw new UsuarioInvalido();
        }
    }
    
    public static Usuario registraUsuario(String nombre, String apPaterno, String apMaterno, String email, String contrasena) throws UsuarioYaExistente{
        String encContra=encriptaContrasena(contrasena);
        if(encContra!=null){
            try {
                Usuario u=Usuario.registraUsuario(nombre, apPaterno, apMaterno, email, encContra);
                return u;
            } catch (Exception e) {
                throw new UsuarioYaExistente();
            }
        }else{
            throw new UsuarioYaExistente();
        }
        
    }
    
    private static String encriptaContrasena(String plainText){
        PasswordService ps= PasswordService.getInstance();
        try {
            return ps.encrypt(plainText);
        } catch (SystemUnavailableException ex) {
            return null;
        }
    }
    
    public static void main(String[] args) {
        try {
            System.out.println(         Autenticacion.autenticaUsuario("1234", "1234"));
        } catch (Exception ex) {
            Logger.getLogger(Autenticacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
